﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sealight.Core.Domain;

namespace Sealight.Data
{
    public interface IProductDataRepository : IRepository<ProductEntity>
    {       
        ProductVariantEntity SaveOrUpdateProductVariant(ProductVariantEntity entity);
        ProductVariantEntity GetProductVariantByID(Guid id);
        PictureEntity AddPicture(PictureEntity entity);
        PictureEntity GetPictureByID(Guid id);
        void DeletePicture(PictureEntity pic);
        void MapCategoryToProduct(ProductCategoryEntity categoryMap);
        CategoryEntity GetProductCategoryByID(Guid id);
        IList<CategoryEntity> GetCategoryByParentID(Guid id);
        IList<SpecificationAttributeOptionEntity> GetAllOptionBySpecificationId(Guid id);
        IList<RelatedProductEntity> GetRelatedProducts(Guid productId);
        IList<ProductEntity> SearchProduct(string keyword, Guid categoryId);
        IList<ProductVariantAttributeEntity> GetProductVariantAttribute(Guid productVariantId);
        IList<ProductVariantAttributeValueEntity> GetProductVariantAttributeValue(Guid productVariantAttributeId);
        IList<ProductSpecificationAttributeEntity> GetSpecificationOptionAttributeForProduct(Guid id);
    }
}
